home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 352_01 / strpp.cpp < prev    next >
C/C++ Source or Header  |  1991-04-28  |  1KB  |  70 lines

  1. // STRINGPP.CPP  - basic modules for C++ String class
  2. //        This file contains     String::construct()
  3. //                            String::Destruct()
  4. //                            String::~String()
  5. //                            String::String()
  6. //                            String::copy()
  7. //
  8.  
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <alloc.h>
  12. #include <iostream.h>
  13. #include <ctype.h>
  14.  
  15. #include "wtwg.h"
  16.  
  17. #include "dblib.h"
  18.  
  19. char String::caseSens = OFF;
  20.  
  21.  
  22. void String::construct ( char *p )    
  23.     // local utility for construction - allocate memory, copy into, ensure \0
  24.     {
  25.     register int sn =n;
  26.     if ( (sn >0) && (p != NULL) )
  27.         {
  28.         char *ptr = (char *)wmalloc (sn+1, "String");
  29.         s=ptr;
  30.         memcpy (ptr, p, sn);
  31.         ptr[sn] = 0;
  32.         }
  33.     else  
  34.         {
  35.         s=NULL;
  36.         n=0;
  37.         } 
  38.     }
  39. void String::destruct ( ) 
  40.     // destructor routine to free allocated memory, 
  41.     // also called from routines that shorten the string
  42.     // It's the latter use that prevents merely testing this->n.
  43.     {
  44.     char *ptr =s;
  45.     if ( ptr!=NULL ) { free(ptr); s=NULL; };
  46.     n = 0;
  47.     }
  48.  
  49. void String::copy( int l, char *p )    
  50.     // private utility for copy
  51.     {
  52.     if ( (l==0) || (p==NULL) )
  53.         {
  54.         destruct();
  55.         }
  56.     else
  57.     if ( n!=l )            // strings of unequal length, reallocate.
  58.         {
  59.         destruct();
  60.         n= l;
  61.         construct (p);
  62.         }
  63.     else
  64.         {        // Strings of equal length-    terminal NULL already set. 
  65.         memcpy (s, p, l);
  66.         }
  67.     }    // end String::copy()
  68.  
  69. //--------------------- end STRINGPP.CPP -----------------------    
  70.